Routines (alphabetical) > Routines: W > WRITE_PNG

WRITE_PNG

Syntax | Arguments | Keywords | Examples | Version History | See Also

The WRITE_PNG procedure writes a 2-D or 3-D IDL variable into a Portable Network Graphics (PNG) file. The data in the file is stored using lossless compression with either 8 or 16 data bits per channel, based on the input IDL variable type. 3-D IDL variables must have the number of channels as their leading dimension (pixel interleaved). For BYTE format 2-D IDL variables, an optional palette may be stored in the image file along with a list of pixel values which are to be considered transparent by a reading program.

Note: IDL supports version 1.2.7 of the PNG Library.

Syntax

WRITE_PNG, Filename, Image[, R, G, B] [, /ORDER] [, TRANSPARENT=array] [, /VERBOSE] [, XRESOLUTION=value] [, YRESOLUTION=value]

Arguments

Filename

A scalar string containing the full pathname of the PNG file to write.

Image

The array to write into the new PNG file. If Image is one of the integer data types, it is converted to type unsigned integer (UINT) and written out at 16 data bits per channel. All other data types are converted to bytes and written out at 8-bits per channel.

Note: If Image is two-dimensional (single-channel) and R, G, and B are provided, all input data types (including integer) are converted to bytes and written out as 8-bit data.

R, G, B

For single-channel images, R, G, and B should contain the red, green, and blue color vectors, respectively. For multi-channel images, these arguments are ignored.

Keywords

ORDER

Set this keyword to indicate that the rows of the image should be written from bottom to top. The rows are written from top to bottom by default. ORDER provides compatibility with PNG files written using versions of IDL prior to IDL 5.4, which wrote PNG files from bottom to top.

TRANSPARENT

Set this keyword to an array of pixel index values which are to be treated as “transparent” for the purposes of image display. This keyword is valid only if Image is a single-channel (color indexed) image and the R, G, B palette is provided.

VERBOSE

Produces additional diagnostic output during the write.

XRESOLUTION

Set this keyword to the horizontal resolution (in dots per inch) of the image. This keyword does not affect the actual image data. Internally, the resolution is converted to pixels per meter and stored in the PNG file header for use by other applications. The default behavior is to not write out this attribute.

YRESOLUTION

Set this keyword to the vertical resolution (in dots per inch) of the image. This keyword does not affect the actual image data. Internally, the resolution is converted to pixels per meter and stored in the PNG file header for use by other applications. The default behavior is to not write out this attribute.

Examples

The following lines create an image in an IDL graphics window, read it from the window and write it as a .png file in the temporary directory, then read the .png file and display it in the same graphics window:

; Save device settings and tell IDL to use a color table
DEVICE, GET_DECOMPOSED=old_decomposed
DEVICE, DECOMPOSED=0
LOADCT, 14

; Create an image and display it
IMAGE1 = DIST(300)
WINDOW, 1, XSIZE=300, YSIZE=300
TV, IMAGE1

; Write a PNG file to the temporary directory
; Note the use of the TRUE keyword to TVRD
filename = FILEPATH('test.png', /TMP)
WRITE_PNG, filename, TVRD(/TRUE)
PRINT, 'File written to ', filename

; Read in the file
IMAGE2 = READ_PNG(filename)

; Display the IMAGE1 and IMAGE2 side by side
; Note the use of the TRUE keyword to TV
WINDOW, 1, XSIZE=600, YSIZE=300, $
   TITLE='Original (left) and Image read from file (right)'
TV, IMAGE1, 0
TV, IMAGE2, 1, /TRUE

; Restore device settings.
DEVICE, DECOMPOSED=old_decomposed

Version History

5.2

Introduced

See Also

READ_PNG , QUERY_* Routines